Материалы
11 лет назад
Создание спрайтов, оверлеев, и других особых текстур
Создание спрайтов, оверлеев, светящихся, двойных (blend-текстур для дисплейсментов) и текстур с анимацией
Создание спрайтов, оверлеев, светящихся, двойных и анимационных текстур отличается лишь содержимым vmt-файла, а изображение можно сделать любое и переделать в текстуру. О
создании собственных текстур я уже писал, если вы еще не создавали простейших текстур, сначала прочитайте тот урок. В данном же уроке мы изучим vmt-файлы разных видов текстур, но перед этим рассмотрим создание текстур с анимацией, так как их механизм создания немного другой.
Для начала нам нужно сделать несколько изображений-кадров для будущей текстуры, каждое изображение - отдельный кадр анимации. Все они должны иметь формат TGA. Создайте где-нибудь папку materialsrc, в ней создайте ещё одну папку, например, myTexture и в неё поместите ваши изображения (это необходимо, что компилятор текстур понял, в какую папку класть готовую текстуру, в данном случае он положит её в cstrike/materials/myTexture). Нужно, чтобы изображения имели имена такого вида: image001.tga, image002.tga, image003.tga и т.д. по порядку будущих кадров.
Теперь создайте текстовый файл с таким же именем, как у изображений (в данном случае - image.txt) и впишите туда следующее:
"startframe" "1"
"endframe" "8" Где 8 - кол-во кадров анимации. Половина работы сделана, теперь нужно запустить компилятор с помощью bat-файла. Создаём текстовый файл в той же папке с любым именем и пишем туда следующее:
"путь к компилятору vtex" image.txt Где image.txt - это имя нашего текстового файла, в котором указано кол-во кадров. У кого Steam, путь к компилятору будет такой:
C:\Program Files\Steam\steamapps\7950849\sourcesdk\bin\orangebox\bin\vtex.exe. У кого пиратка, у вас vtex находится тут:
папка с вашим SDK\bin\orangebox\bin\vtex.exe, т.е. аналогично.
Сохраните этот текстовый файл, затем измените расширение с txt на bat и запускайте. VTF-текстура будет создана в папке
cstrike/materials/myTexture и будет иметь имя
image.vtf. Возможно, было немного непонятно (хотя я старался), но в следующий раз при создании текстуры с анимацией вам будет намного проще! Теперь перейдём к VMT-файлам
У текстуры с анимацией vmt-файл выглядит так:
"LightMappedGeneric"
{
"$baseTexture" "tesla/tesla"
"Proxies"
{
"AnimatedTexture"
{
"animatedTextureVar" "$basetexture"
"animatedTextureFrameNumVar" "$frame"
"animatedTextureFrameRate" "15"
}
}
} В параметре
$baseTexture нужно указать имя своей текстуры относительно папки materials, это как всегда. Также можно поставить параметр $translucent, если текстура имеет прозрачность.
Картинка, которая будет спрайтом, не имеет прозрачности, все прозрачные области должны быть чёрного цвета:
VMT-файл вот такой:
"Sprite"
{
"$spriteorientation" "vp_parallel"
"$spriteorigin" "[ 0.50 0.50 ]"
"$basetexture" "sprites/glow"
} $basetexture - путь к текстуре,
$spriteorientation - ориентация спрайта, может принимать следующие параметры:
vp_parallel - спрайт всегда повёрнут к игроку, причём чем дальше он - тем больше,
oriented - спрайт никогда не поворачивается,
vp_parallel_oriented - спрайт всегда повёрнут к игроку и всегда одинакового размера.
Оверлеи очень похожи на декали (точнее оверлеи и есть декали, поэтому имеют схожие параметры), к картинкам особых требований нет, могут быть как прозрачными, так и нет.
"LightmappedGeneric"
{
"$basetexture" "overlays/gravelpath01b"
"$translucent" 1
"$decal" 1
"$surfaceprop" "gravel"
$vertexalpha 1
} Отличие оверлея от декали - его можно накладывать на дисплейсмент, для это у него есть параметр
$vertexalpha, равный 1.
Двойные текстуры (или blend-текстуры), которые используются для дисплейсментов, на самом деле являются двумя обычными текстурами, которые просто объединены в один VMT-файл:
"WorldVertexTransition"
{
"$basetexture" "nature/dirtfloor006a"
"$basetexture2" "nature/gravelfloor004a"
"%tooltexture" "nature/dirtfloor006a"
"$surfaceprop" "dirt"
"$surfaceprop2" "dirt"
} Заголовок должен обязательно быть
WorldVertexTransition.
$basetexture и
$basetexture2 - имена текстур,
$surfaceprop и
$surfaceprop2 - их типы материалов.
%tooltexture в игре не используется, он нужен только хаммеру для отображения текстуры на поверхностях, параметр должен быть таким же, как и $basetexture.
Светящиеся текстуры - это уже посложнее. Тут нам уже нужно 2 изображения:
Первое изображение - обычная текстура, которая вы хотите сделать светящейся, а второе - та же текстура, только в ней все области, которые НЕ должны светиться, закрашены чёрным цветом. Поняли смысл? Вот еще пример:
Светиться будет только стекло, но не рама, потому что на втором скрине рама закрашена чёрным.
Теперь делаем светящуюся текстуру на основе полученной информации. Создаём 2 рисунка - один обычный, другой - особый, на котором будут только светящиеся части, а остальные - закрашены в чёрный. Превращаем их в VTF через VTFEdit и правим vmt-файл:
"LightmappedGeneric"
{
"$basetexture" "train/info"
"$surfaceprop" "glass"
"$translucent" "1"
"$selfillum" "1"
"$envmapmask" "train/info_ref"
} $envmapmask - здесь указываем путь ко второму рисунку, обязательно ставим параметр
$selfillum и у нас будет светящаяся текстура. Разумеется, если всё сделали правильно. На этом туториал завершается, надеюсь, что всё было понятно и желаю удачи!
Комментарии пользователей сайта:
Спрайт не становится прозрачным в игре . Более того , даже примеры спрайтов имеют черный фон в игре . Как исправить ?
В cs go, скорее всего, по-другому, посмотри стандартные светящиеся текстуры в папке с игрой
Не работает способ со светящимися текстура в кс го, просто не работает и все
Если Вам понравилась эта страница, Вы можете разместить где-нибудь ссылку на неё: